// export you , arabians , russians ; export kurt , omar , schilzze , herst , tantrotov ; export WasInNorthBase ; starting begin InIt ;
   0: CALL 9 0 0
// start_mission ;
   4: CALL 1660 0 0
// end ;
   8: END
// function InIt ; begin
   9: LD_INT 0
  11: PPUSH
// you := 2 ;
  12: LD_ADDR_EXP 1
  16: PUSH
  17: LD_INT 2
  19: ST_TO_ADDR
// arabians := 5 ;
  20: LD_ADDR_EXP 2
  24: PUSH
  25: LD_INT 5
  27: ST_TO_ADDR
// russians := 3 ;
  28: LD_ADDR_EXP 3
  32: PUSH
  33: LD_INT 3
  35: ST_TO_ADDR
// WasInNorthBase := false ;
  36: LD_ADDR_EXP 9
  40: PUSH
  41: LD_INT 0
  43: ST_TO_ADDR
// load_all ;
  44: CALL 57 0 0
// prepare_all_arabian_units ;
  48: CALL 916 0 0
// end ; end_of_file
  52: LD_VAR 0 1
  56: RET
// export function load_all ; begin
  57: LD_INT 0
  59: PPUSH
// load_kurt ;
  60: CALL 156 0 0
// load_omar ;
  64: CALL 308 0 0
// load_schilzze ;
  68: CALL 460 0 0
// load_herst ;
  72: CALL 612 0 0
// load_tantrotov ;
  76: CALL 764 0 0
// ComeOnTheMap ( kurt ) ;
  80: LD_EXP 4
  84: PPUSH
  85: CALL 121 0 1
// ComeOnTheMap ( schilzze ) ;
  89: LD_EXP 6
  93: PPUSH
  94: CALL 121 0 1
// ComeOnTheMap ( herst ) ;
  98: LD_EXP 7
 102: PPUSH
 103: CALL 121 0 1
// ComeOnTheMap ( tantrotov ) ;
 107: LD_EXP 8
 111: PPUSH
 112: CALL 121 0 1
// end ;
 116: LD_VAR 0 1
 120: RET
// function ComeOnTheMap ( un ) ; begin
 121: LD_INT 0
 123: PPUSH
// PlaceUnitArea ( un , enter , false ) ;
 124: LD_VAR 0 1
 128: PPUSH
 129: LD_INT 1
 131: PPUSH
 132: LD_INT 0
 134: PPUSH
 135: CALL_OW 49
// SetDir ( un , 4 ) ;
 139: LD_VAR 0 1
 143: PPUSH
 144: LD_INT 4
 146: PPUSH
 147: CALL_OW 233
// end ;
 151: LD_VAR 0 2
 155: RET
// function load_kurt ; begin
 156: LD_INT 0
 158: PPUSH
// uc_side := you ;
 159: LD_ADDR_OWVAR 20
 163: PUSH
 164: LD_EXP 1
 168: ST_TO_ADDR
// kurt := CreateCharacter ( Kurt ) ;
 169: LD_ADDR_EXP 4
 173: PUSH
 174: LD_STRING Kurt
 176: PPUSH
 177: CALL_OW 34
 181: ST_TO_ADDR
// if ( not kurt ) then
 182: LD_EXP 4
 186: NOT
 187: IFFALSE 303
// begin uc_side := you ;
 189: LD_ADDR_OWVAR 20
 193: PUSH
 194: LD_EXP 1
 198: ST_TO_ADDR
// uc_nation := nation_arabian ;
 199: LD_ADDR_OWVAR 21
 203: PUSH
 204: LD_INT 2
 206: ST_TO_ADDR
// hc_name := Kurt Rosenfield ;
 207: LD_ADDR_OWVAR 26
 211: PUSH
 212: LD_STRING Kurt Rosenfield
 214: ST_TO_ADDR
// hc_gallery := as ;
 215: LD_ADDR_OWVAR 33
 219: PUSH
 220: LD_STRING as
 222: ST_TO_ADDR
// hc_face_number := 1 ;
 223: LD_ADDR_OWVAR 34
 227: PUSH
 228: LD_INT 1
 230: ST_TO_ADDR
// hc_attr := [ 12 , 12 ] ;
 231: LD_ADDR_OWVAR 29
 235: PUSH
 236: LD_INT 12
 238: PUSH
 239: LD_INT 12
 241: PUSH
 242: EMPTY
 243: LIST
 244: LIST
 245: ST_TO_ADDR
// hc_importance := 110 ;
 246: LD_ADDR_OWVAR 32
 250: PUSH
 251: LD_INT 110
 253: ST_TO_ADDR
// hc_sex := sex_male ;
 254: LD_ADDR_OWVAR 27
 258: PUSH
 259: LD_INT 1
 261: ST_TO_ADDR
// hc_class := class_soldier ;
 262: LD_ADDR_OWVAR 28
 266: PUSH
 267: LD_INT 1
 269: ST_TO_ADDR
// hc_skills := [ 3 , 1 , 1 , 0 ] ;
 270: LD_ADDR_OWVAR 31
 274: PUSH
 275: LD_INT 3
 277: PUSH
 278: LD_INT 1
 280: PUSH
 281: LD_INT 1
 283: PUSH
 284: LD_INT 0
 286: PUSH
 287: EMPTY
 288: LIST
 289: LIST
 290: LIST
 291: LIST
 292: ST_TO_ADDR
// kurt := CreateHuman ;
 293: LD_ADDR_EXP 4
 297: PUSH
 298: CALL_OW 44
 302: ST_TO_ADDR
// end ; end ;
 303: LD_VAR 0 1
 307: RET
// function load_omar ; begin
 308: LD_INT 0
 310: PPUSH
// uc_side := arabians ;
 311: LD_ADDR_OWVAR 20
 315: PUSH
 316: LD_EXP 2
 320: ST_TO_ADDR
// omar := CreateCharacter ( Omar ) ;
 321: LD_ADDR_EXP 5
 325: PUSH
 326: LD_STRING Omar
 328: PPUSH
 329: CALL_OW 34
 333: ST_TO_ADDR
// if ( not omar ) then
 334: LD_EXP 5
 338: NOT
 339: IFFALSE 455
// begin uc_side := arabians ;
 341: LD_ADDR_OWVAR 20
 345: PUSH
 346: LD_EXP 2
 350: ST_TO_ADDR
// uc_nation := nation_arabian ;
 351: LD_ADDR_OWVAR 21
 355: PUSH
 356: LD_INT 2
 358: ST_TO_ADDR
// hc_name := ejk Omar ;
 359: LD_ADDR_OWVAR 26
 363: PUSH
 364: LD_STRING ejk Omar
 366: ST_TO_ADDR
// hc_gallery := ru ;
 367: LD_ADDR_OWVAR 33
 371: PUSH
 372: LD_STRING ru
 374: ST_TO_ADDR
// hc_face_number := 46 ;
 375: LD_ADDR_OWVAR 34
 379: PUSH
 380: LD_INT 46
 382: ST_TO_ADDR
// hc_attr := [ 10 , 10 ] ;
 383: LD_ADDR_OWVAR 29
 387: PUSH
 388: LD_INT 10
 390: PUSH
 391: LD_INT 10
 393: PUSH
 394: EMPTY
 395: LIST
 396: LIST
 397: ST_TO_ADDR
// hc_importance := 0 ;
 398: LD_ADDR_OWVAR 32
 402: PUSH
 403: LD_INT 0
 405: ST_TO_ADDR
// hc_sex := sex_male ;
 406: LD_ADDR_OWVAR 27
 410: PUSH
 411: LD_INT 1
 413: ST_TO_ADDR
// hc_class := class_desert_warior ;
 414: LD_ADDR_OWVAR 28
 418: PUSH
 419: LD_INT 11
 421: ST_TO_ADDR
// hc_skills := [ 4 , 3 , 4 , 2 ] ;
 422: LD_ADDR_OWVAR 31
 426: PUSH
 427: LD_INT 4
 429: PUSH
 430: LD_INT 3
 432: PUSH
 433: LD_INT 4
 435: PUSH
 436: LD_INT 2
 438: PUSH
 439: EMPTY
 440: LIST
 441: LIST
 442: LIST
 443: LIST
 444: ST_TO_ADDR
// omar := CreateHuman ;
 445: LD_ADDR_EXP 5
 449: PUSH
 450: CALL_OW 44
 454: ST_TO_ADDR
// end ; end ;
 455: LD_VAR 0 1
 459: RET
// function load_schilzze ; begin
 460: LD_INT 0
 462: PPUSH
// uc_side := you ;
 463: LD_ADDR_OWVAR 20
 467: PUSH
 468: LD_EXP 1
 472: ST_TO_ADDR
// schilzze := CreateCharacter ( Schilzze ) ;
 473: LD_ADDR_EXP 6
 477: PUSH
 478: LD_STRING Schilzze
 480: PPUSH
 481: CALL_OW 34
 485: ST_TO_ADDR
// if ( not schilzze ) then
 486: LD_EXP 6
 490: NOT
 491: IFFALSE 607
// begin uc_side := you ;
 493: LD_ADDR_OWVAR 20
 497: PUSH
 498: LD_EXP 1
 502: ST_TO_ADDR
// uc_nation := nation_arabian ;
 503: LD_ADDR_OWVAR 21
 507: PUSH
 508: LD_INT 2
 510: ST_TO_ADDR
// hc_name := Mike Schilzze ;
 511: LD_ADDR_OWVAR 26
 515: PUSH
 516: LD_STRING Mike Schilzze
 518: ST_TO_ADDR
// hc_gallery := as ;
 519: LD_ADDR_OWVAR 33
 523: PUSH
 524: LD_STRING as
 526: ST_TO_ADDR
// hc_face_number := 3 ;
 527: LD_ADDR_OWVAR 34
 531: PUSH
 532: LD_INT 3
 534: ST_TO_ADDR
// hc_attr := [ 10 , 11 ] ;
 535: LD_ADDR_OWVAR 29
 539: PUSH
 540: LD_INT 10
 542: PUSH
 543: LD_INT 11
 545: PUSH
 546: EMPTY
 547: LIST
 548: LIST
 549: ST_TO_ADDR
// hc_importance := 80 ;
 550: LD_ADDR_OWVAR 32
 554: PUSH
 555: LD_INT 80
 557: ST_TO_ADDR
// hc_sex := sex_male ;
 558: LD_ADDR_OWVAR 27
 562: PUSH
 563: LD_INT 1
 565: ST_TO_ADDR
// hc_class := class_soldier ;
 566: LD_ADDR_OWVAR 28
 570: PUSH
 571: LD_INT 1
 573: ST_TO_ADDR
// hc_skills := [ 2 , 1 , 0 , 0 ] ;
 574: LD_ADDR_OWVAR 31
 578: PUSH
 579: LD_INT 2
 581: PUSH
 582: LD_INT 1
 584: PUSH
 585: LD_INT 0
 587: PUSH
 588: LD_INT 0
 590: PUSH
 591: EMPTY
 592: LIST
 593: LIST
 594: LIST
 595: LIST
 596: ST_TO_ADDR
// schilzze := CreateHuman ;
 597: LD_ADDR_EXP 6
 601: PUSH
 602: CALL_OW 44
 606: ST_TO_ADDR
// end ; end ;
 607: LD_VAR 0 1
 611: RET
// function load_herst ; begin
 612: LD_INT 0
 614: PPUSH
// uc_side := you ;
 615: LD_ADDR_OWVAR 20
 619: PUSH
 620: LD_EXP 1
 624: ST_TO_ADDR
// herst := CreateCharacter ( Herst ) ;
 625: LD_ADDR_EXP 7
 629: PUSH
 630: LD_STRING Herst
 632: PPUSH
 633: CALL_OW 34
 637: ST_TO_ADDR
// if ( not herst ) then
 638: LD_EXP 7
 642: NOT
 643: IFFALSE 759
// begin uc_side := you ;
 645: LD_ADDR_OWVAR 20
 649: PUSH
 650: LD_EXP 1
 654: ST_TO_ADDR
// uc_nation := nation_arabian ;
 655: LD_ADDR_OWVAR 21
 659: PUSH
 660: LD_INT 2
 662: ST_TO_ADDR
// hc_name := Hugo Herst ;
 663: LD_ADDR_OWVAR 26
 667: PUSH
 668: LD_STRING Hugo Herst
 670: ST_TO_ADDR
// hc_gallery := as ;
 671: LD_ADDR_OWVAR 33
 675: PUSH
 676: LD_STRING as
 678: ST_TO_ADDR
// hc_face_number := 4 ;
 679: LD_ADDR_OWVAR 34
 683: PUSH
 684: LD_INT 4
 686: ST_TO_ADDR
// hc_attr := [ 11 , 11 ] ;
 687: LD_ADDR_OWVAR 29
 691: PUSH
 692: LD_INT 11
 694: PUSH
 695: LD_INT 11
 697: PUSH
 698: EMPTY
 699: LIST
 700: LIST
 701: ST_TO_ADDR
// hc_importance := 79 ;
 702: LD_ADDR_OWVAR 32
 706: PUSH
 707: LD_INT 79
 709: ST_TO_ADDR
// hc_sex := sex_male ;
 710: LD_ADDR_OWVAR 27
 714: PUSH
 715: LD_INT 1
 717: ST_TO_ADDR
// hc_class := class_scientistic ;
 718: LD_ADDR_OWVAR 28
 722: PUSH
 723: LD_INT 4
 725: ST_TO_ADDR
// hc_skills := [ 0 , 1 , 1 , 3 ] ;
 726: LD_ADDR_OWVAR 31
 730: PUSH
 731: LD_INT 0
 733: PUSH
 734: LD_INT 1
 736: PUSH
 737: LD_INT 1
 739: PUSH
 740: LD_INT 3
 742: PUSH
 743: EMPTY
 744: LIST
 745: LIST
 746: LIST
 747: LIST
 748: ST_TO_ADDR
// herst := CreateHuman ;
 749: LD_ADDR_EXP 7
 753: PUSH
 754: CALL_OW 44
 758: ST_TO_ADDR
// end ; end ;
 759: LD_VAR 0 1
 763: RET
// function load_tantrotov ; begin
 764: LD_INT 0
 766: PPUSH
// uc_side := you ;
 767: LD_ADDR_OWVAR 20
 771: PUSH
 772: LD_EXP 1
 776: ST_TO_ADDR
// tantrotov := CreateCharacter ( Tantrotov ) ;
 777: LD_ADDR_EXP 8
 781: PUSH
 782: LD_STRING Tantrotov
 784: PPUSH
 785: CALL_OW 34
 789: ST_TO_ADDR
// if ( not tantrotov ) then
 790: LD_EXP 8
 794: NOT
 795: IFFALSE 911
// begin uc_side := you ;
 797: LD_ADDR_OWVAR 20
 801: PUSH
 802: LD_EXP 1
 806: ST_TO_ADDR
// uc_nation := nation_russian ;
 807: LD_ADDR_OWVAR 21
 811: PUSH
 812: LD_INT 3
 814: ST_TO_ADDR
// hc_name := Boris A. Tantrotov ;
 815: LD_ADDR_OWVAR 26
 819: PUSH
 820: LD_STRING Boris A. Tantrotov
 822: ST_TO_ADDR
// hc_gallery := as ;
 823: LD_ADDR_OWVAR 33
 827: PUSH
 828: LD_STRING as
 830: ST_TO_ADDR
// hc_face_number := 5 ;
 831: LD_ADDR_OWVAR 34
 835: PUSH
 836: LD_INT 5
 838: ST_TO_ADDR
// hc_attr := [ 11 , 11 ] ;
 839: LD_ADDR_OWVAR 29
 843: PUSH
 844: LD_INT 11
 846: PUSH
 847: LD_INT 11
 849: PUSH
 850: EMPTY
 851: LIST
 852: LIST
 853: ST_TO_ADDR
// hc_importance := 0 ;
 854: LD_ADDR_OWVAR 32
 858: PUSH
 859: LD_INT 0
 861: ST_TO_ADDR
// hc_sex := sex_male ;
 862: LD_ADDR_OWVAR 27
 866: PUSH
 867: LD_INT 1
 869: ST_TO_ADDR
// hc_class := class_scientistic ;
 870: LD_ADDR_OWVAR 28
 874: PUSH
 875: LD_INT 4
 877: ST_TO_ADDR
// hc_skills := [ 1 , 1 , 0 , 2 ] ;
 878: LD_ADDR_OWVAR 31
 882: PUSH
 883: LD_INT 1
 885: PUSH
 886: LD_INT 1
 888: PUSH
 889: LD_INT 0
 891: PUSH
 892: LD_INT 2
 894: PUSH
 895: EMPTY
 896: LIST
 897: LIST
 898: LIST
 899: LIST
 900: ST_TO_ADDR
// tantrotov := CreateHuman ;
 901: LD_ADDR_EXP 8
 905: PUSH
 906: CALL_OW 44
 910: ST_TO_ADDR
// end ; end ; end_of_file
 911: LD_VAR 0 1
 915: RET
// export NCom ; export function prepare_all_arabian_units ; begin
 916: LD_INT 0
 918: PPUSH
// prepare_north_base_units ;
 919: CALL 963 0 0
// prepare_south_base_units ;
 923: CALL 1200 0 0
// prepare_north_base_commander ;
 927: CALL 1546 0 0
// PlaceUnitXY ( NCom , 72 , 10 , false ) ;
 931: LD_EXP 10
 935: PPUSH
 936: LD_INT 72
 938: PPUSH
 939: LD_INT 10
 941: PPUSH
 942: LD_INT 0
 944: PPUSH
 945: CALL_OW 48
// ComHold ( NCom ) ;
 949: LD_EXP 10
 953: PPUSH
 954: CALL_OW 140
// end ;
 958: LD_VAR 0 1
 962: RET
// function prepare_north_base_units ; var i , j , brws ; begin
 963: LD_INT 0
 965: PPUSH
 966: PPUSH
 967: PPUSH
 968: PPUSH
// brws := FilterAllUnits ( [ [ f_side , arabians ] , [ f_btype , b_breastwork ] ] ) ;
 969: LD_ADDR_VAR 0 4
 973: PUSH
 974: LD_INT 22
 976: PUSH
 977: LD_EXP 2
 981: PUSH
 982: EMPTY
 983: LIST
 984: LIST
 985: PUSH
 986: LD_INT 30
 988: PUSH
 989: LD_INT 31
 991: PUSH
 992: EMPTY
 993: LIST
 994: LIST
 995: PUSH
 996: EMPTY
 997: LIST
 998: LIST
 999: PPUSH
1000: CALL_OW 69
1004: ST_TO_ADDR
// uc_side := arabians ;
1005: LD_ADDR_OWVAR 20
1009: PUSH
1010: LD_EXP 2
1014: ST_TO_ADDR
// uc_nation := nation_arabian ;
1015: LD_ADDR_OWVAR 21
1019: PUSH
1020: LD_INT 2
1022: ST_TO_ADDR
// InItHc ;
1023: CALL_OW 19
// uc_direction := 2 ;
1027: LD_ADDR_OWVAR 24
1031: PUSH
1032: LD_INT 2
1034: ST_TO_ADDR
// PrepareSoldier ( sex_male , 3 ) ;
1035: LD_INT 1
1037: PPUSH
1038: LD_INT 3
1040: PPUSH
1041: CALL_OW 381
// PlaceHumanInUnit ( CreateHuman , NBrw1 ) ;
1045: CALL_OW 44
1049: PPUSH
1050: LD_INT 88
1052: PPUSH
1053: CALL_OW 52
// for i := 1 to 5 do
1057: LD_ADDR_VAR 0 2
1061: PUSH
1062: DOUBLE
1063: LD_INT 1
1065: DEC
1066: ST_TO_ADDR
1067: LD_INT 5
1069: PUSH
1070: FOR_TO
1071: IFFALSE 1113
// begin PrepareSoldier ( rand ( 0 , 1 ) , rand ( 1 , 3 ) ) ;
1073: LD_INT 0
1075: PPUSH
1076: LD_INT 1
1078: PPUSH
1079: CALL_OW 12
1083: PPUSH
1084: LD_INT 1
1086: PPUSH
1087: LD_INT 3
1089: PPUSH
1090: CALL_OW 12
1094: PPUSH
1095: CALL_OW 381
// PlaceHumanInUnit ( CreateHuman , NArm1 ) ;
1099: CALL_OW 44
1103: PPUSH
1104: LD_INT 83
1106: PPUSH
1107: CALL_OW 52
// end ;
1111: GO 1070
1113: POP
1114: POP
// for i := 1 to 2 do
1115: LD_ADDR_VAR 0 2
1119: PUSH
1120: DOUBLE
1121: LD_INT 1
1123: DEC
1124: ST_TO_ADDR
1125: LD_INT 2
1127: PUSH
1128: FOR_TO
1129: IFFALSE 1171
// begin PrepareScientist ( rand ( 0 , 1 ) , rand ( 1 , 3 ) ) ;
1131: LD_INT 0
1133: PPUSH
1134: LD_INT 1
1136: PPUSH
1137: CALL_OW 12
1141: PPUSH
1142: LD_INT 1
1144: PPUSH
1145: LD_INT 3
1147: PPUSH
1148: CALL_OW 12
1152: PPUSH
1153: CALL_OW 384
// PlaceHumanInUnit ( CreateHuman , NLab1 ) ;
1157: CALL_OW 44
1161: PPUSH
1162: LD_INT 64
1164: PPUSH
1165: CALL_OW 52
// end ;
1169: GO 1128
1171: POP
1172: POP
// PrepareEngineer ( sex_male , 2 ) ;
1173: LD_INT 1
1175: PPUSH
1176: LD_INT 2
1178: PPUSH
1179: CALL_OW 382
// PlaceHumanInUnit ( CreateHuman , NDep1 ) ;
1183: CALL_OW 44
1187: PPUSH
1188: LD_INT 77
1190: PPUSH
1191: CALL_OW 52
// end ;
1195: LD_VAR 0 1
1199: RET
// function prepare_south_base_units ; var i , j , brws ; begin
1200: LD_INT 0
1202: PPUSH
1203: PPUSH
1204: PPUSH
1205: PPUSH
// brws := FilterAllUnits ( [ [ f_side , arabians ] , [ f_btype , b_breastwork ] ] ) ;
1206: LD_ADDR_VAR 0 4
1210: PUSH
1211: LD_INT 22
1213: PUSH
1214: LD_EXP 2
1218: PUSH
1219: EMPTY
1220: LIST
1221: LIST
1222: PUSH
1223: LD_INT 30
1225: PUSH
1226: LD_INT 31
1228: PUSH
1229: EMPTY
1230: LIST
1231: LIST
1232: PUSH
1233: EMPTY
1234: LIST
1235: LIST
1236: PPUSH
1237: CALL_OW 69
1241: ST_TO_ADDR
// uc_side := arabians ;
1242: LD_ADDR_OWVAR 20
1246: PUSH
1247: LD_EXP 2
1251: ST_TO_ADDR
// uc_nation := nation_arabian ;
1252: LD_ADDR_OWVAR 21
1256: PUSH
1257: LD_INT 2
1259: ST_TO_ADDR
// InItHc ;
1260: CALL_OW 19
// for i := 1 to 2 do
1264: LD_ADDR_VAR 0 2
1268: PUSH
1269: DOUBLE
1270: LD_INT 1
1272: DEC
1273: ST_TO_ADDR
1274: LD_INT 2
1276: PUSH
1277: FOR_TO
1278: IFFALSE 1316
// begin uc_direction := 0 ;
1280: LD_ADDR_OWVAR 24
1284: PUSH
1285: LD_INT 0
1287: ST_TO_ADDR
// PrepareSoldier ( rand ( 0 , 1 ) , rand ( 1 , 3 ) ) ;
1288: LD_INT 0
1290: PPUSH
1291: LD_INT 1
1293: PPUSH
1294: CALL_OW 12
1298: PPUSH
1299: LD_INT 1
1301: PPUSH
1302: LD_INT 3
1304: PPUSH
1305: CALL_OW 12
1309: PPUSH
1310: CALL_OW 381
// end ;
1314: GO 1277
1316: POP
1317: POP
// for j in ( brws diff NBrw1 ) do
1318: LD_ADDR_VAR 0 3
1322: PUSH
1323: LD_VAR 0 4
1327: PUSH
1328: LD_INT 88
1330: DIFF
1331: PUSH
1332: FOR_IN
1333: IFFALSE 1351
// begin PlaceHumanInUnit ( CreateHuman , j ) ;
1335: CALL_OW 44
1339: PPUSH
1340: LD_VAR 0 3
1344: PPUSH
1345: CALL_OW 52
// end ;
1349: GO 1332
1351: POP
1352: POP
// for i := 1 to 4 do
1353: LD_ADDR_VAR 0 2
1357: PUSH
1358: DOUBLE
1359: LD_INT 1
1361: DEC
1362: ST_TO_ADDR
1363: LD_INT 4
1365: PUSH
1366: FOR_TO
1367: IFFALSE 1409
// begin PrepareSoldier ( rand ( 0 , 1 ) , rand ( 1 , 3 ) ) ;
1369: LD_INT 0
1371: PPUSH
1372: LD_INT 1
1374: PPUSH
1375: CALL_OW 12
1379: PPUSH
1380: LD_INT 1
1382: PPUSH
1383: LD_INT 3
1385: PPUSH
1386: CALL_OW 12
1390: PPUSH
1391: CALL_OW 381
// PlaceHumanInUnit ( CreateHuman , SArm1 ) ;
1395: CALL_OW 44
1399: PPUSH
1400: LD_INT 37
1402: PPUSH
1403: CALL_OW 52
// end ;
1407: GO 1366
1409: POP
1410: POP
// for i := 1 to 2 do
1411: LD_ADDR_VAR 0 2
1415: PUSH
1416: DOUBLE
1417: LD_INT 1
1419: DEC
1420: ST_TO_ADDR
1421: LD_INT 2
1423: PUSH
1424: FOR_TO
1425: IFFALSE 1467
// begin PrepareScientist ( rand ( 0 , 1 ) , rand ( 1 , 3 ) ) ;
1427: LD_INT 0
1429: PPUSH
1430: LD_INT 1
1432: PPUSH
1433: CALL_OW 12
1437: PPUSH
1438: LD_INT 1
1440: PPUSH
1441: LD_INT 3
1443: PPUSH
1444: CALL_OW 12
1448: PPUSH
1449: CALL_OW 384
// PlaceHumanInUnit ( CreateHuman , SLab1 ) ;
1453: CALL_OW 44
1457: PPUSH
1458: LD_INT 39
1460: PPUSH
1461: CALL_OW 52
// end ;
1465: GO 1424
1467: POP
1468: POP
// for i := 1 to 2 do
1469: LD_ADDR_VAR 0 2
1473: PUSH
1474: DOUBLE
1475: LD_INT 1
1477: DEC
1478: ST_TO_ADDR
1479: LD_INT 2
1481: PUSH
1482: FOR_TO
1483: IFFALSE 1517
// begin PrepareMechanic ( sex_male , rand ( 1 , 3 ) ) ;
1485: LD_INT 1
1487: PPUSH
1488: LD_INT 1
1490: PPUSH
1491: LD_INT 3
1493: PPUSH
1494: CALL_OW 12
1498: PPUSH
1499: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , SFac1 ) ;
1503: CALL_OW 44
1507: PPUSH
1508: LD_INT 31
1510: PPUSH
1511: CALL_OW 52
// end ;
1515: GO 1482
1517: POP
1518: POP
// PrepareEngineer ( sex_male , 3 ) ;
1519: LD_INT 1
1521: PPUSH
1522: LD_INT 3
1524: PPUSH
1525: CALL_OW 382
// PlaceHumanInUnit ( CreateHuman , SDep1 ) ;
1529: CALL_OW 44
1533: PPUSH
1534: LD_INT 9
1536: PPUSH
1537: CALL_OW 52
// end ;
1541: LD_VAR 0 1
1545: RET
// function prepare_north_base_commander ; begin
1546: LD_INT 0
1548: PPUSH
// uc_side := arabians ;
1549: LD_ADDR_OWVAR 20
1553: PUSH
1554: LD_EXP 2
1558: ST_TO_ADDR
// uc_nation := nation_arabian ;
1559: LD_ADDR_OWVAR 21
1563: PUSH
1564: LD_INT 2
1566: ST_TO_ADDR
// hc_name := nort base comm ;
1567: LD_ADDR_OWVAR 26
1571: PUSH
1572: LD_STRING nort base comm
1574: ST_TO_ADDR
// hc_gallery :=  ;
1575: LD_ADDR_OWVAR 33
1579: PUSH
1580: LD_STRING 
1582: ST_TO_ADDR
// hc_attr := [ 10 , 10 ] ;
1583: LD_ADDR_OWVAR 29
1587: PUSH
1588: LD_INT 10
1590: PUSH
1591: LD_INT 10
1593: PUSH
1594: EMPTY
1595: LIST
1596: LIST
1597: ST_TO_ADDR
// hc_importance := 0 ;
1598: LD_ADDR_OWVAR 32
1602: PUSH
1603: LD_INT 0
1605: ST_TO_ADDR
// hc_sex := sex_male ;
1606: LD_ADDR_OWVAR 27
1610: PUSH
1611: LD_INT 1
1613: ST_TO_ADDR
// hc_class := class_soldier ;
1614: LD_ADDR_OWVAR 28
1618: PUSH
1619: LD_INT 1
1621: ST_TO_ADDR
// hc_skills := [ 4 , 3 , 4 , 2 ] ;
1622: LD_ADDR_OWVAR 31
1626: PUSH
1627: LD_INT 4
1629: PUSH
1630: LD_INT 3
1632: PUSH
1633: LD_INT 4
1635: PUSH
1636: LD_INT 2
1638: PUSH
1639: EMPTY
1640: LIST
1641: LIST
1642: LIST
1643: LIST
1644: ST_TO_ADDR
// NCom := CreateHuman ;
1645: LD_ADDR_EXP 10
1649: PUSH
1650: CALL_OW 44
1654: ST_TO_ADDR
// end ; end_of_file
1655: LD_VAR 0 1
1659: RET
// export function start_mission ; var i , yun , rhex ; begin
1660: LD_INT 0
1662: PPUSH
1663: PPUSH
1664: PPUSH
1665: PPUSH
// yun := FilterAllUnits ( [ [ f_side , you ] ] ) ;
1666: LD_ADDR_VAR 0 3
1670: PUSH
1671: LD_INT 22
1673: PUSH
1674: LD_EXP 1
1678: PUSH
1679: EMPTY
1680: LIST
1681: LIST
1682: PUSH
1683: EMPTY
1684: LIST
1685: PPUSH
1686: CALL_OW 69
1690: ST_TO_ADDR
// rhex := RandHexArea ( place , true ) ;
1691: LD_ADDR_VAR 0 4
1695: PUSH
1696: LD_INT 2
1698: PPUSH
1699: LD_INT 1
1701: PPUSH
1702: CALL_OW 16
1706: ST_TO_ADDR
// InGameOn ;
1707: CALL_OW 8
// CenterOnXY ( 142 , 58 ) ;
1711: LD_INT 142
1713: PPUSH
1714: LD_INT 58
1716: PPUSH
1717: CALL_OW 84
// Wait ( 0 0$2 ) ;
1721: LD_INT 70
1723: PPUSH
1724: CALL_OW 67
// for i in yun do
1728: LD_ADDR_VAR 0 2
1732: PUSH
1733: LD_VAR 0 3
1737: PUSH
1738: FOR_IN
1739: IFFALSE 1770
// begin ComMoveXY ( i , rhex [ 1 ] , rhex [ 2 ] ) ;
1741: LD_VAR 0 2
1745: PPUSH
1746: LD_VAR 0 4
1750: PUSH
1751: LD_INT 1
1753: ARRAY
1754: PPUSH
1755: LD_VAR 0 4
1759: PUSH
1760: LD_INT 2
1762: ARRAY
1763: PPUSH
1764: CALL_OW 111
// end ;
1768: GO 1738
1770: POP
1771: POP
// Say ( herst , D1-Her-1 ) ;
1772: LD_EXP 7
1776: PPUSH
1777: LD_STRING D1-Her-1
1779: PPUSH
1780: CALL_OW 88
// Say ( kurt , D1-Kurt-1 ) ;
1784: LD_EXP 4
1788: PPUSH
1789: LD_STRING D1-Kurt-1
1791: PPUSH
1792: CALL_OW 88
// Say ( schilzze , D1-Schi-1 ) ;
1796: LD_EXP 6
1800: PPUSH
1801: LD_STRING D1-Schi-1
1803: PPUSH
1804: CALL_OW 88
// Say ( kurt , D1-Kurt-2 ) ;
1808: LD_EXP 4
1812: PPUSH
1813: LD_STRING D1-Kurt-2
1815: PPUSH
1816: CALL_OW 88
// InGameOff ;
1820: CALL_OW 9
// SaveForQuickRestart ;
1824: CALL_OW 22
// wait ( 0 0$0.5 ) ;
1828: LD_INT 18
1830: PPUSH
1831: CALL_OW 67
// ChangeMissionObjectives ( M1 ) ;
1835: LD_STRING M1
1837: PPUSH
1838: CALL_OW 337
// end ;
1842: LD_VAR 0 1
1846: RET
// var un_see ; every 0 0$1 trigger GetDistUnits ( kurt , NCom ) <= 11 and ( not WasInNorthBase ) do
1847: LD_EXP 4
1851: PPUSH
1852: LD_EXP 10
1856: PPUSH
1857: CALL_OW 296
1861: PUSH
1862: LD_INT 11
1864: LESSEQUAL
1865: PUSH
1866: LD_EXP 9
1870: NOT
1871: AND
1872: IFFALSE 1896
1874: GO 1876
1876: DISABLE
// begin un_see := un_see ^ [ kurt ] ;
1877: LD_ADDR_LOC 1
1881: PUSH
1882: LD_LOC 1
1886: PUSH
1887: LD_EXP 4
1891: PUSH
1892: EMPTY
1893: LIST
1894: ADD
1895: ST_TO_ADDR
// end ;
1896: END
// every 0 0$1 trigger GetDistUnits ( schilzze , NCom ) <= 1 and ( not WasInNorthBase ) do
1897: LD_EXP 6
1901: PPUSH
1902: LD_EXP 10
1906: PPUSH
1907: CALL_OW 296
1911: PUSH
1912: LD_INT 1
1914: LESSEQUAL
1915: PUSH
1916: LD_EXP 9
1920: NOT
1921: AND
1922: IFFALSE 1946
1924: GO 1926
1926: DISABLE
// begin un_see := un_see ^ [ schilzze ] ;
1927: LD_ADDR_LOC 1
1931: PUSH
1932: LD_LOC 1
1936: PUSH
1937: LD_EXP 6
1941: PUSH
1942: EMPTY
1943: LIST
1944: ADD
1945: ST_TO_ADDR
// end ;
1946: END
// every 0 0$1 trigger GetDistUnits ( kurt , NCom ) <= 11 do var i , un , hex ;
1947: LD_EXP 4
1951: PPUSH
1952: LD_EXP 10
1956: PPUSH
1957: CALL_OW 296
1961: PUSH
1962: LD_INT 11
1964: LESSEQUAL
1965: IFFALSE 2301
1967: GO 1969
1969: DISABLE
1970: LD_INT 0
1972: PPUSH
1973: PPUSH
1974: PPUSH
// begin un_see := [ ] ;
1975: LD_ADDR_LOC 1
1979: PUSH
1980: EMPTY
1981: ST_TO_ADDR
// un_see := un_see ^ [ kurt ] ;
1982: LD_ADDR_LOC 1
1986: PUSH
1987: LD_LOC 1
1991: PUSH
1992: LD_EXP 4
1996: PUSH
1997: EMPTY
1998: LIST
1999: ADD
2000: ST_TO_ADDR
// un := FilterAllUnits ( [ [ f_side , you ] , [ f_ok ] ] ) ;
2001: LD_ADDR_VAR 0 2
2005: PUSH
2006: LD_INT 22
2008: PUSH
2009: LD_EXP 1
2013: PUSH
2014: EMPTY
2015: LIST
2016: LIST
2017: PUSH
2018: LD_INT 50
2020: PUSH
2021: EMPTY
2022: LIST
2023: PUSH
2024: EMPTY
2025: LIST
2026: LIST
2027: PPUSH
2028: CALL_OW 69
2032: ST_TO_ADDR
// Wait ( 0 0$2.5 ) ;
2033: LD_INT 88
2035: PPUSH
2036: CALL_OW 67
// ComStop ( kurt ) ;
2040: LD_EXP 4
2044: PPUSH
2045: CALL_OW 141
// for i in ( un diff un_see ) do
2049: LD_ADDR_VAR 0 1
2053: PUSH
2054: LD_VAR 0 2
2058: PUSH
2059: LD_LOC 1
2063: DIFF
2064: PUSH
2065: FOR_IN
2066: IFFALSE 2291
// begin hex := [ GetX ( kurt ) , GetY ( kurt ) ] ;
2068: LD_ADDR_VAR 0 3
2072: PUSH
2073: LD_EXP 4
2077: PPUSH
2078: CALL_OW 250
2082: PUSH
2083: LD_EXP 4
2087: PPUSH
2088: CALL_OW 251
2092: PUSH
2093: EMPTY
2094: LIST
2095: LIST
2096: ST_TO_ADDR
// if hex [ 1 ] < 70 then
2097: LD_VAR 0 3
2101: PUSH
2102: LD_INT 1
2104: ARRAY
2105: PUSH
2106: LD_INT 70
2108: LESS
2109: IFFALSE 2148
// begin ComMoveXY ( i , hex [ 1 ] - 3 , hex [ 2 ] + 2 ) end else
2111: LD_VAR 0 1
2115: PPUSH
2116: LD_VAR 0 3
2120: PUSH
2121: LD_INT 1
2123: ARRAY
2124: PUSH
2125: LD_INT 3
2127: MINUS
2128: PPUSH
2129: LD_VAR 0 3
2133: PUSH
2134: LD_INT 2
2136: ARRAY
2137: PUSH
2138: LD_INT 2
2140: PLUS
2141: PPUSH
2142: CALL_OW 111
2146: GO 2183
// begin ComMoveXY ( i , hex [ 1 ] + 2 , hex [ 2 ] + 2 ) ;
2148: LD_VAR 0 1
2152: PPUSH
2153: LD_VAR 0 3
2157: PUSH
2158: LD_INT 1
2160: ARRAY
2161: PUSH
2162: LD_INT 2
2164: PLUS
2165: PPUSH
2166: LD_VAR 0 3
2170: PUSH
2171: LD_INT 2
2173: ARRAY
2174: PUSH
2175: LD_INT 2
2177: PLUS
2178: PPUSH
2179: CALL_OW 111
// end ; if hex [ 1 ] < 70 and hex [ 2 ] > 5 then
2183: LD_VAR 0 3
2187: PUSH
2188: LD_INT 1
2190: ARRAY
2191: PUSH
2192: LD_INT 70
2194: LESS
2195: PUSH
2196: LD_VAR 0 3
2200: PUSH
2201: LD_INT 2
2203: ARRAY
2204: PUSH
2205: LD_INT 5
2207: GREATER
2208: AND
2209: IFFALSE 2244
// begin ComMoveXY ( i , hex [ 1 ] - 4 , hex [ 2 ] ) ;
2211: LD_VAR 0 1
2215: PPUSH
2216: LD_VAR 0 3
2220: PUSH
2221: LD_INT 1
2223: ARRAY
2224: PUSH
2225: LD_INT 4
2227: MINUS
2228: PPUSH
2229: LD_VAR 0 3
2233: PUSH
2234: LD_INT 2
2236: ARRAY
2237: PPUSH
2238: CALL_OW 111
// end else
2242: GO 2289
// if hex [ 1 ] > 70 then
2244: LD_VAR 0 3
2248: PUSH
2249: LD_INT 1
2251: ARRAY
2252: PUSH
2253: LD_INT 70
2255: GREATER
2256: IFFALSE 2289
// begin ComMoveXY ( i , hex [ 1 ] + 4 , hex [ 2 ] ) ;
2258: LD_VAR 0 1
2262: PPUSH
2263: LD_VAR 0 3
2267: PUSH
2268: LD_INT 1
2270: ARRAY
2271: PUSH
2272: LD_INT 4
2274: PLUS
2275: PPUSH
2276: LD_VAR 0 3
2280: PUSH
2281: LD_INT 2
2283: ARRAY
2284: PPUSH
2285: CALL_OW 111
// end ; end ;
2289: GO 2065
2291: POP
2292: POP
// WasInNorthBase := true ;
2293: LD_ADDR_EXP 9
2297: PUSH
2298: LD_INT 1
2300: ST_TO_ADDR
// end ;
2301: PPOPN 3
2303: END
